package com.ly.lypopupwindowdemo.activity;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.Toast;

import com.ly.lypopupwindowdemo.R;

public class SelectorDemoActivity extends AppCompatActivity {


    /**
     * 一个控件当被按下的时候，它的状态是从unselected--->selected此时手指是没用离开控件的
     * 依然是出于一个按下的状态。
     * 当手指从控件拿开之后，就会回到unselected状态。
     *
     */

    /**
     * 给Button设置selector背景，换背景图片，没有效果但是设置换字体颜色就有效。
     * 说明Button的background属性不支持直接换图片。
     *
     * 把Button换成ImageButotn再把对应的selector修改一下，
     * 每个Item增加一个Bitmap来加载背景图片，结果运行成功
     */


    /**
     * 语法基本有一下几种
     *
     * <?xml version="1.0" encoding="utf-8"?>
     <selector xmlns:android="http://schemas.android.com/apk/res/android" >
     <item
     android:color="hex_color"               //颜色值，#RGB,$ARGB,#RRGGBB,#AARRGGBB
     android:state_pressed=["true" | "false"]//是否触摸
     android:state_focused=["true" | "false"]//是否获得焦点
     android:state_selected=["true" | "false"]//是否被状态
     android:state_checkable=["true" | "false"]//是否可选
     android:state_checked=["true" | "false"]//是否选中
     android:state_enabled=["true" | "false"]//是否可用
     android:state_window_focused=["true" | "false"] />//是否窗口聚焦
     </selector>

     注意，把默认的颜色或者样式写在最后一行
     item是从上往下匹配的，如果匹配到一个item那它就将采用这个item，而不是采用最佳匹配的规则；所以设置默认的状态，一定要写在最后，如果写在前面，则后面所有的item都不会起作用了。
     另外，selector标签下有两个比较有用的属性要说一下，添加了下面两个属性之后，则会在状态改变时出现淡入淡出效果，但必须在API Level 11及以上才支持：

     android:enterFadeDuration 状态改变时，新状态展示时的淡入时间，以毫秒为单位
     android:exitFadeDuration 状态改变时，旧状态消失时的淡出时间，以毫秒为单位

     */

    Button btn;
    ImageButton ib;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_selector_demo);

        ib = (ImageButton) findViewById(R.id.view2);
        btn = (Button) findViewById(R.id.view1);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (btn.isSelected()){
                    btn.setSelected(false);
                }else{
                    btn.setSelected(true);
                }
            }
        });

        ib.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (ib.isSelected()){
                    ib.setSelected(false);
                }else{
                    ib.setSelected(true);
                }
                //Toast.makeText(SelectorDemoActivity.this, "当前控件是否selected"+ib.isSelected(), Toast.LENGTH_SHORT).show();
            }
        });
    }
}
